bcf5b7ba18a84e217a7dbdaefcd7c82314081ff8,java/java-impl/src/com/intellij/psi/impl/PsiSuperMethodImplUtil.java,PsiSuperMethodImplUtil,buildMethodHierarchy,#PsiClass#PsiSubstitutor#boolean#Set#boolean#,104
Before Change
for (Map.Entry<MethodSignature, HierarchicalMethodSignature> entry : superResult.entrySet()) {
HierarchicalMethodSignature hierarchicalMethodSignature = entry.getValue();
if (!PsiUtil.isAccessible(hierarchicalMethodSignature.getMethod(), aClass, aClass)) continue;
MethodSignature superSignature = entry.getKey();
HierarchicalMethodSignatureImpl existing = map.get(superSignature);
if (existing == null) {
After Change
for (Map.Entry<MethodSignature, HierarchicalMethodSignature> entry : superResult.entrySet()) {
HierarchicalMethodSignature hms = entry.getValue();
MethodSignature signature = entry.getKey();
PsiClass containingClass = hms.getMethod().getContainingClass();
List<HierarchicalMethodSignature> supers = new ArrayList<HierarchicalMethodSignature>(hms.getSuperSignatures());
for (HierarchicalMethodSignature aSuper : supers) {
PsiClass superContainingClass = aSuper.getMethod().getContainingClass();
if (containingClass != null && superContainingClass != null && !containingClass.isInheritor(superContainingClass, true)) {
// methods must be inherited from unrelated classes, so flatten hierarchy here
// class C implements SAM1, SAM2 { void methodimpl() {} }
//hms.getSuperSignatures().remove(aSuper);